package com.zpark.updater;

import com.zpark.entity.HistoryData;
import com.zpark.entity.SuccessData;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class TimeSlotUpdater extends Updater {
    @Override
    public void update(SuccessData successData, HistoryData historyData, UpdaterChain updaterChain) {
        doUpdate(successData.getEvaluateTime(),historyData);
        updaterChain.doChain(successData, historyData);
    }

    private void doUpdate(long evaluateTime, HistoryData historyData) {
        Map<String, Map<String, Integer>> historyLoginTimeSlot = historyData.getHistoryLoginTimeSlot();
        if(historyLoginTimeSlot==null || historyLoginTimeSlot.size()==0){
            //第一次
            historyLoginTimeSlot=new HashMap<>();
        }
        //根据evaluateTime获取到星期以及小时
        //运用工具类计算出用户登录的时间为星期几
        String[] WEEKS={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};//定义一个数组

        Date date = new Date(evaluateTime);//指定的时间
        int day = date.getDay();//星期，0表示周日，1表示周一...6表示周六
        String week = WEEKS[day];//星期
        int hours = date.getHours();//小时

        //如果map中包含了week这个星期，就根据week这个key到map中获取一个map（map2<小时，次数>）
        if(historyLoginTimeSlot.containsKey(week)){
            Map<String, Integer> map2 = historyLoginTimeSlot.get(week);
//            System.out.println(map2.get(hours+"")+"++"+hours);
            //如果map2中包含hours这个key，就取出来它的值+1
            if(map2.containsKey(hours+"")){
                map2.put(hours+"",map2.get(hours+"")+1);
            }else{
                map2.put(hours+"",1);
//                System.out.println(map2.get(hours+"")+"&&&&");
            }
        }else{
            Map<String,Integer> map2 = new HashMap<>();
            map2.put(hours+"",1);
            historyLoginTimeSlot.put(week,map2);
        }

        historyData.setHistoryLoginTimeSlot(historyLoginTimeSlot);
    }
}
